package com.atguigu.gmall.order.service;


import com.atguigu.gmall.model.enums.ProcessStatus;
import com.atguigu.gmall.model.order.OrderInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

public interface OrderService extends IService<OrderInfo> {
    //提交订单
    Long saveOrderInfo(OrderInfo orderInfo);

    //防止用户退回不刷新重复提交订单 京东没有这个设置
    //生产流水号
    String getTradeNo(String userId);

    //比较流水号  userId 获取缓存中的流水号 tradeNo   页面传递过来的流水号
    Boolean checkTradeCode(String tradeNo, String userId);

    //删除流水号
    void deleteTradeNo(String userId);

    //验证库存
    Boolean checkStock(Long skuId, Integer skuNum);

    //分页
    IPage<OrderInfo> getPage(Page<OrderInfo> pageParam, String userId);

    //取消订单
    void cancelOrder(Long orderId);

    //通过订单id获取订单信息
    OrderInfo getOrderInfo(Long orderId);

    //修改订单状态
    void updateOrderStatus(Long orderId, ProcessStatus processStatus);

    //  发送消息给库存！
    void sendOrderStatus(Long orderId);

    // 将orderInfo 转换为map
    Map<String, Object> initWare(OrderInfo orderInfo);

    //实现拆单业务
    List<OrderInfo> OrderSplit(String orderId, String wareSkuMap);

    //根据flag"1",Alipay       "2"取消本地交易记录orderInfo+paymentInfo
    void cancelOrder(Long orderId, String flag);
}
